using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using 凌依.工具库;

public class 游戏数据保存管理器 : 单例_基础管理器<游戏数据保存管理器>
{
    public string 存档名 = "新的世界";
    public void 保存存档()
    {
        存档路径集合 path;
        if (存档路径管理.获取实例.存档列表.ContainsKey(存档名))
            path = 存档路径管理.获取实例.存档列表[存档名];
        else
            path = 存档路径管理.获取实例.创建存档文件夹(存档名);

        IO操作.文件_覆盖写入(path.地图数据路径, 地图数据保存.获取实例.保存数据());
        //未完成,优先写预设地图存档
    }

    public void 加载存档()
    {

    }

    public void 保存地图(int 规格, int 格子数量, string 地图名称,Sprite 预览图)
    {
        地图路径集合 path;
        if (存档路径管理.获取实例.地图列表.ContainsKey(地图名称))
            path = 存档路径管理.获取实例.地图列表[地图名称];
        else
            path = 存档路径管理.获取实例.创建地图文件夹(地图名称);
        IO操作.文件_覆盖写入(path.地图数据路径, 地图数据保存.获取实例.保存数据());
        byte[] 预览图1 = 预览图.texture.EncodeToPNG();
        IO操作.文件_覆盖写入(path.预览图路径, 预览图1);
        IO操作.文件_覆盖写入(path.地图数据配置路径, 序列化工具.序列化_json(new 地图数据配置(规格, 格子数量, 地图名称)));
    }

    //public void 保存存档()
    //{
    //    string path = 路径 + "/" + 存档名;
    //    IO操作.文件夹_创建(path);
    //    path += "/" + "GameData.json";
    //    地图存档信息 save = new 地图存档信息();
    //    save.地图数据 = 地图数据保存.获取实例.保存数据();


    //    IO操作.文件_覆盖写入(path, 序列化工具.序列化_json(save));
    //    Debug.Log(path+"存档写入完成");
    //}

    //public void 加载存档()
    //{
    //    string path = 路径 + "/" + 存档名 + "/" + "GameData.json";
    //    地图存档信息 data = 序列化工具.反序列化_json<地图存档信息>(IO操作.读取_全部文本(path));
    //    地图数据保存.获取实例.加载数据(data.地图数据);
    //    Debug.Log("存档加载完成");
    //}
}

[System.Serializable]
public class 地图数据配置
{
    public int 规格;
    public int 格子数量;
    public string 地图名称;

    public 地图数据配置(int 规格, int 格子数量, string 地图名称)
    {
        this.规格 = 规格;
        this.格子数量 = 格子数量;
        this.地图名称 = 地图名称;
    }
}